import { type FormItemRule } from "element-plus";

type ItemType = 
|"password" // 密码框
| "text" // 文本框
| "textarea" // 多行文本框
| "radio" // 单选框
| "checkbox" // 多选框
| 'upload' // 上传
| 'upload-file' // 上传附件
| 'date-picker' // 日期选择
| 'daterange-picker' // 日期范围选择
| 'datetime-picker' // 时间选择
| 'datetimerange-picker' // 时间范围选择
| 'custom'; // 自定义组件


// 当FiledItem的type === 'radio' | 'checkbox'时，options的参数类型
export type IFieldOptions = {
  labelkey?: string;
  valueKey?: string;
  placeholder?: string;
  data: Record<string, any>[];
};

export type Options = {
  labelWidth?: string | number;
  labelPosition?: "left" | "right" | "top";
  disabled?: boolean;
  size?: "large" | "small" | "default";
  showResetButton?: boolean; // 是否展示重置按钮
  showCancelButton?: boolean; // 是否展示取消按钮
  submitButtonText?: string;
  resetButtonText?: string;
  cancelButtonText?: string;
};

export type FieldItem = {
  label?: string;
  labelWidth?: string | number; // 标签宽度，例如 '50px'。 可以使用 auto。
  field: string;
  type?: ItemType;
  value?: any;
  placeholder?: string;
  disabled?: boolean;
  readonly?: boolean;
  options?: IFieldOptions;
  rules?: FormItemRule[];
  clearable?: boolean; // 是否可清空
  showPassword?: boolean; // 是否显示切换密码图标
  enterable?: boolean; // 当为输入框时，是否启用回车触发提交功能
};
